//package com.qiwenshare.file.spark;
//
//public class AvgAge {
//    public static void main(String[] args){
//        SparkConf conf = new SparkConf();
//        conf.setMaster("local");
//        conf.setAppName("AvgAge");
//        JavaSparkContext sc = new JavaSparkContext(conf);
//        //刚从文件读出来的RDD已经是一行一行的字符串，所以可以直接进行mapToPair
//        JavaRDD<String> fileRDD = sc.textFile("src/main/files/peopleAges.txt");
//        JavaPairRDD<Integer, Integer> ageOneRdd = fileRDD.mapToPair(new PairFunction<String, Integer, Integer>() {
//            @Override
//            public Tuple2<Integer, Integer> call(String s) throws Exception {
//                return new Tuple2<>(Integer.parseInt(s.split("\\s+")[1]),1);
//            }
//        });
//
//		//使用reduceByKey算子对具有相同年龄值的数据进行聚合，获取每个年龄值的人数
//        JavaPairRDD<Integer, Integer> ageCountRDD = ageOneRdd.reduceByKey(new Function2<Integer, Integer, Integer>() {
//            @Override
//            public Integer call(Integer integer, Integer integer2) throws Exception {
//                return integer+integer2;
//            }
//        });
//
//        //求平均年龄
//        //先通过map算子取出每个年龄值作为一个RDD。
//        //reduce()函数的输入RDD不能是pair，只能是单个数据组成的RDD
//        Integer ageSum = fileRDD.map(new Function<String, Integer>() {
//            @Override
//            public Integer call(String s) throws Exception {
//                return Integer.parseInt(s.split("\\s+")[1]);
//            }
//        }).reduce(new Function2<Integer, Integer, Integer>() {
//            @Override
//            public Integer call(Integer s, Integer s2) throws Exception {
//                return s+s2;
//            }
//        });
//        System.out.println("平均年龄："+ageSum/fileRDD.count());
//
//        ageCountRDD.saveAsTextFile("src/main/files/ageAnalysis");
//
//    }
